from fastapi.middleware.cors import CORSMiddleware as FastAPICORSMiddleware
from typing import List


class CORSMiddleware:
    """
    CORS (Cross-Origin Resource Sharing) 中间件封装类

    用于处理跨域资源共享问题，允许浏览器向不同源的服务器发起请求。
    该类是对 FastAPI 内置的 CORSMiddleware 的进一步封装，简化配置过程。
    """

    @staticmethod
    def setup(app, origins: List[str] = None):
        """
        配置并添加 CORS 中间件到 FastAPI 应用中

        :param app: FastAPI 应用实例
        :param origins: 允许跨域访问的源列表，默认为 ["*"] 表示允许所有源
        :return: None
        """
        # 如果未提供 origins，则默认允许所有来源
        if origins is None:
            origins = ["*"]

        # 将 FastAPI 的 CORSMiddleware 添加到应用中
        app.add_middleware(
            FastAPICORSMiddleware,
            allow_origins=origins,        # 允许的源列表
            allow_credentials=True,       # 是否允许携带认证信息（如 cookies）
            allow_methods=["*"],          # 允许的 HTTP 方法（GET, POST 等）
            allow_headers=["*"],          # 允许的请求头字段
        )
